A domain name system (DNS) server functions to provide a destination internet protocol (IP) address for a given host domain name (or simply hostname). For example, a DNS server may provide the destination IP address 10.20.30.40 for the hostname “www.example.com.” This functionality is referred to as a forward DNS lookup (or simply DNS lookup or forward mapping) and makes it possible for a user of a client device to contact a host server based on knowledge of the hostname, rather than requiring the user to know the destination IP address of the host server.
There is also a conventional process for implementing a reverse DNS lookup (or reverse mapping), in which the destination IP address can be used to obtain the corresponding hostname. However, the reverse mapping often fails to provide accurate information because there is no requirement that the reverse mapping correspond with the forward mapping. Also, the forward and reverse mappings are often managed by different entities. Additionally, there are many situations where there is no reverse mapping available, so the reverse mapping returns an indication that there is no hostname corresponding to the destination IP address. In other situations, multiple hostnames may be mapped to the same destination IP address, so the reverse mapping may return a different hostname, other than the hostname originally used by the client device. These and other problems with conventional reverse mapping make it difficult for an internet service provider (ISP) to accurately track the actual hostnames that are requested by a particular client device. Consequently, it is difficult, for example, to properly manage the permissions for the user on the client device.